package com.student.dao;

import java.sql.*;
import java.util.ResourceBundle;

/**
 * @author 康娜的小肥腿
 */
public class JdbcUtil {
    // 数据库的连接信息
    private final static String DRIVER = getValue("jdbc.driver");
    private final static String URL = getValue("jdbc.url");
    private final static String USERNAME = getValue("jdbc.user");
    private final static String PASSWORD = getValue("jdbc.password");

    // 1. 注册数据库驱动程序
    static {
        try {
            Class.forName(DRIVER);
        } catch (ClassNotFoundException e) {
            System.err.println("加载数据库驱动程序失败！" + e.getMessage());
        }
    }


    /**
     * 2. 获取数据库连接
     * 3. 通过Connection 创建语句对象java.sql.Statement
     * 4. 通过语句对象执行CRUD（增查改删），如果为查询则获得结果集java.sql.ResultSet
     * 5. 遍历查询结果集，如果是增删改则忽略此步骤
     * 6. 关闭数据相关资源: Connection, Statement, ResultSet
     *
     * @return
     */
    public static Connection getConnection() {
        try {
            Connection conn = DriverManager.getConnection(URL, USERNAME, PASSWORD);
            return conn;
        } catch (SQLException e) {
            System.err.println("获取数据库连接失败！" + e.getMessage());
        }
        return null;
    }

    /**
     * 释放数据库资源
     *
     * @param conn 数据库连接
     * @param stmt 语句对象
     * @param rs   结果集对象
     */
    public static void close(Connection conn, Statement stmt, ResultSet rs) {
        try {
            if (rs != null) {
                rs.close();
            }
            if (stmt != null) {
                stmt.close();
            }
            if (conn != null) {
                conn.close();
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }

    public static String getValue(String key) {
        // jdbc.properties
        ResourceBundle bundle = ResourceBundle.getBundle("jdbc");
        return bundle.getString(key);
    }

    public static void main(String[] args) {
        System.out.println(getValue("jdbc.url"));
        System.out.println(getValue("jdbc.user"));
        System.out.println(getValue("jdbc.password"));

        System.out.println(getConnection());
    }
}
